home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 4
/
Apprentice-Release4.iso
/
Languages
/
Caml Light 0.7
/
examples
/
compress
/
esbit.ml
< prev
next >
Wrap
Text File
|
1995-06-01
|
748b
|
25 lines
type tampon = { mutable val: int; mutable nbits: int };;
let tampon = { val = 0; nbits = 0 };;
let initialise () = tampon.val <- 0; tampon.nbits <- 0;;
let écrire_bit sortie bit =
tampon.val <- tampon.val lor (bit lsl tampon.nbits);
tampon.nbits <- tampon.nbits + 1;
if tampon.nbits >= 8 then begin
output_char sortie (char_of_int tampon.val);
tampon.val <- 0;
tampon.nbits <- 0
end;;
let finir sortie =
if tampon.nbits > 0 then
output_char sortie (char_of_int tampon.val);;
let lire_bit entrée =
if tampon.nbits <= 0 then begin
tampon.val <- int_of_char(input_char entrée);
tampon.nbits <- 8
end;
let res = tampon.val land 1 in
tampon.val <- tampon.val lsr 1;
tampon.nbits <- tampon.nbits - 1;
res;;